package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;

import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import modelo.GrupoColaborativo;
import modelo.Laboratorio;
import modelo.LineaDeInvestigacion;
import modelo.Proyecto;
import modelo.Tematica;
import vista.VentanaListadoProyectos;
import vista.VentanaProyecto;
import vista.VentanaUsuario;

public class ControladorProyecto implements ActionListener, MouseListener {
	
	private VentanaProyecto ventanap;
	private Laboratorio laboratorio;
	private GrupoColaborativo grupo;
	private LineaDeInvestigacion linea;
	private Proyecto proyecto;
	private int fila = 0;
	private String pro;

public ControladorProyecto(Laboratorio laboratorio)
{
	this.laboratorio = laboratorio;
	ventanap = VentanaProyecto.getInstancia();
	//ventanap.setLocationRelativeTo(null);
	ventanap.setVisible(true);
	ventanap.agregarListener(this);
	ventanap.agregarMouseListener(this);
	ventanap.getBotonModificar().setEnabled(false);
	ventanap.getBotonEliminar().setEnabled(false);
	ventanap.getBotonConclusion().setEnabled(false);
	llenarComboGrupo();
	cargarTematicas();
	
	
	

	
	this.generarCodigo();
	//this.llenarComboGrupo();
	
		
	}

public ControladorProyecto() {
	super();
	ventanap.setVisible(true);
}


public void actionPerformed(ActionEvent e) {
	ControladorVentanaUsuario cu;
	ControladorProducto cp;
	
	// Si le da click al BOTON GUARDAR...
	if (e.getActionCommand().equalsIgnoreCase("Guardar"))
		{ 
		 if (ventanap.getNombrev().equalsIgnoreCase("") 
		||ventanap.getResumenv().equalsIgnoreCase("")
		|| ventanap.getPalabrasClavesv().equalsIgnoreCase("") ||ventanap.getAntecedentesv().equalsIgnoreCase("")
	    || ventanap.getProblemav().equalsIgnoreCase("") ||ventanap.getMetodologiav().equalsIgnoreCase("")
	    || ventanap.getBibliografiav().equalsIgnoreCase("") || ventanap.getProblemav().equalsIgnoreCase("") 
	    ||ventanap.getMetodologiav().equalsIgnoreCase("") || ventanap.getDiav().equalsIgnoreCase("") 
	    ||ventanap.getMesv().equalsIgnoreCase("")  ){
		 
		ventanap.mostrarMensaje("Los campos no pueden ser vacios");}		
		 else {
			 agregarproyecto();
			 ventanap.limpiarCombo();
			 llenarComboGrupo();
			  limpiarTabla();}
		 	 
		 }// Fin GUARDAR
	
	// Si le da click al BOTON BUSCAR
	else if (e.getActionCommand().equalsIgnoreCase("Buscar")){
			
		llenarListadoProyectos();
		}
	
	else if( e.getActionCommand().equalsIgnoreCase("Cancelar")){
		ventanap.blanquearCampos();
		ventanap.getBotonGuardar().setEnabled(true);
		ventanap.getBotonModificar().setEnabled(false);
		ventanap.getBotonBuscar().setEnabled(true);
		ventanap.getBotonEliminar().setEnabled(false);
		ventanap.getBotonConclusion().setEnabled(false);
		ventanap.limpiartabla();
		generarCodigo();
		}
	
	else if (e.getActionCommand().equalsIgnoreCase("Conclusion")){
		cu = new ControladorVentanaUsuario(proyecto, ventanap, laboratorio);
	}
	else if (e.getActionCommand().equalsIgnoreCase("Eliminar")){
		
		
		int f = ventanap.getTablaProyectos().getSelectedRow();
		if (f != -1){
			
		eliminarProyecto();	
		ventanap.getBotonGuardar().setEnabled(true);
		ventanap.getBotonModificar().setEnabled(false);
		ventanap.getBotonBuscar().setEnabled(true);
		ventanap.blanquearCampos();
		
	}
	}
	
	else if (e.getActionCommand().equalsIgnoreCase("Modificar"))
		{
		 
		if (ventanap.getNombrev().equalsIgnoreCase("") 
		||ventanap.getResumenv().equalsIgnoreCase("")
		|| ventanap.getPalabrasClavesv().equalsIgnoreCase("") ||ventanap.getAntecedentesv().equalsIgnoreCase("")
		|| ventanap.getProblemav().equalsIgnoreCase("") ||ventanap.getMetodologiav().equalsIgnoreCase("")
		|| ventanap.getBibliografiav().equalsIgnoreCase("") || ventanap.getProblemav().equalsIgnoreCase("") 
		||ventanap.getMetodologiav().equalsIgnoreCase("") || ventanap.getDiav().equalsIgnoreCase("") 
		||ventanap.getMesv().equalsIgnoreCase("")){
			
			ventanap.mostrarMensaje("Los campos no pueden ser vacios");}
		 
		 else
		 {
		 modificarProyecto();
		 ventanap.getBotonGuardar().setEnabled(true);
		 ventanap.getBotonModificar().setEnabled(false);
		 ventanap.getBotonBuscar().setEnabled(true);
		 ventanap.getBotonConclusion().setEnabled(false);
		 ventanap.blanquearCampos();
		 generarCodigo();
		 ventanap.limpiarCombo();
		 llenarComboGrupo();
			
		 }
		}
	}
	

	//FIN DE ACTION PERFORMED



//	***********************************************  METODOS COMPLEJOS  *******************************************************


//Metodo que agrega un nuevo Proyecto
public void agregarproyecto(){
	
	Proyecto proyecto= new Proyecto (ventanap.getNombrev(),ventanap.getCodigov(),ventanap.getTematicav(),ventanap.getResumenv(),
			ventanap.getPalabrasClavesv(),ventanap.getAntecedentesv(), ventanap.getProblemav(), ventanap.getMetodologiav(),
			ventanap.getBibliografiav(), ventanap.getEstadov(),ventanap.getFecha(),ventanap.getGrupov(),"A", ventanap.getConclusion());
	
	laboratorio.agregarProyecto(proyecto);		
	ventanap.mostrarMensaje("El proyecto: "+proyecto.getNombre()+" se ha guardado exitosamente.");
	ventanap.blanquearCampos();
	generarCodigo();
	}


//Genera el listado de proyectos
public void llenarListadoProyectos(){
	if(laboratorio.Proyectos().size()!=0)
	{
 //Si el vector no est� vacio, creame un listado, que tendr� los datos del vector proyecto que esta en laboratorio
		
		ventanap.getTablaProyectos().setVisible(true);
		ventanap.setListadoProyectos(new VentanaListadoProyectos(laboratorio.Proyectos()));
		
		ventanap.getBotonModificar().setEnabled(true);
		
		ventanap.getBotonGuardar().setEnabled(false);
	
		
}
	else 
		ventanap.mostrarMensaje("No hay proyectos Registrados");
		ventanap.getBotonModificar().setEnabled(false);
		ventanap.getBotonGuardar().setEnabled(true);
		
	}

public void modificarProyecto(){
		String modificacion = ventanap.getCodigov();
		//int i = laboratorio.buscarProyecto(modificacion);
		//Proyecto proy = laboratorio.getProyecto(i);
	
		Proyecto proyecto = new Proyecto(ventanap.getNombrev(),ventanap.getCodigov(),ventanap.getTematicav(),ventanap.getResumenv(),
			ventanap.getPalabrasClavesv(),ventanap.getAntecedentesv(), ventanap.getProblemav(), ventanap.getMetodologiav(),
			ventanap.getBibliografiav(), ventanap.getEstadov(),ventanap.getFecha(),ventanap.getGrupov(),"A",ventanap.getConclusion());
		laboratorio.agregarProyecto(proyecto);
		ventanap.mostrarMensaje("Proyecto"+ proyecto.getNombre() +"ha sido modificacion con exito");
		this.generarCodigo();
		//ventanap.limpiartabla();

}

public void eliminarProyecto(){
	
	String eliminacion = ventanap.getCodigov();
	//int i = laboratorio.buscarProyecto(eliminacion);
	//Proyecto proy = laboratorio.getProyecto(i);
	
		laboratorio.eliminarProyecto(eliminacion);
		ventanap.mostrarMensaje("Proyecto"+ proyecto.getNombre() +"ha sido eliminado con exito");
		this.generarCodigo();
		ventanap.limpiartabla();
		
}



//Genera codigo para cada Proyecto
public void generarCodigo(){
/*	String cod = "PRO-" + String.valueOf(this.laboratorio.contarProyectos() + 1);
	ventanap.setCodigo(cod);*/
}

public void mouseClicked(MouseEvent me)
{
	fila = ventanap.getTablaProyectos().getSelectedRow(); 
	
	ventanap.setNombre(laboratorio.Proyectos().get(fila).getNombre());
	ventanap.setCodigo(laboratorio.Proyectos().get(fila).getCodigo());
	ventanap.setResumen(laboratorio.Proyectos().get(fila).getResumen());
	ventanap.setMetodologia(laboratorio.Proyectos().get(fila).getMetodologia());
	ventanap.setbibliografia(laboratorio.Proyectos().get(fila).getBibliografia());
	ventanap.setproblema(laboratorio.Proyectos().get(fila).getProblema());
	ventanap.setPalabrasClaves(laboratorio.Proyectos().get(fila).getPalabrasclaves());
	ventanap.setAntecedentes(laboratorio.Proyectos().get(fila).getAntecedentes());
	ventanap.setEstado(laboratorio.Proyectos().get(fila).getEstado());
	ventanap.setTematica(laboratorio.Proyectos().get(fila).getTematica());
	ventanap.setStringGrupo(laboratorio.Proyectos().get(fila).getGrupo());
	ventanap.setDia(laboratorio.Proyectos().get(fila).getDia());
	ventanap.setMes(laboratorio.Proyectos().get(fila).getMes());
	ventanap.setAno(laboratorio.Proyectos().get(fila).getAno());
	ventanap.setConclusion(laboratorio.Proyectos().get(fila).getConclusion());
	
	
	ventanap.getTablaProyectos().setVisible(false);
	
	
	ventanap.getBotonGuardar().setEnabled(false);
	ventanap.getBotonModificar().setEnabled(true);

	
	ventanap.getBotonBuscar().setEnabled(false);
	ventanap.getBotonEliminar().setEnabled(true);
	ventanap.getBotonConclusion().setEnabled(true);
}


//--------------------------------------------------------------------------LLENADO DE COMBOS

/*public void llenarComboGrupo(){
	
		
		for( int i=0;i<=grupo.getColaboradores().size();i++)
		{
			String nomb = laboratorio.getGrupos().get(i).getNombreGrupo();
			ventanap.getCombogrupo().addItem(nomb);
		}
		
	}*/

@Override
public void mouseEntered(MouseEvent e) {
	// TODO Auto-generated method stub
	
}
@Override
public void mouseExited(MouseEvent e) {
	// TODO Auto-generated method stub
	
}
@Override
public void mousePressed(MouseEvent e) {
	// TODO Auto-generated method stub
	
}
@Override
public void mouseReleased(MouseEvent e) {
	// TODO Auto-generated method stub
	
}
public void limpiarTabla(){
	TableModel jTable1Model = new DefaultTableModel();
	ventanap.getTablaProyectos().setModel(jTable1Model);
}

/*
public void llenarComboTematica(){
 
	ventanap.getComboTematica().removeAllItems();
	ventanap.getComboTematica().addItem("Seleccione una Tematica");
	
	for (int i=0;i<laboratorio.contarlineas();i++){
		if (laboratorio.lineasActivas().get(i).getEstatus=="A"){
			
			for(int j=0;linea.get(i).contarTematicas();j++){
				if (linea.tematicasActivas().get(j).getEstatus=="A")
					
					ventanap.getComboTematica().addItem(linea.tematicasActivas.get(j).getNombre);}
			} //llave del if grande
	}//llave del for
	ventanap.getComboTematica().SetSelectesIndex(0);
	
}//Llave del llenar combo*/



public void llenarComboGrupo(){
	 
	//ventanap.getCombogrupo().removeAllItems();
	//ventanap.getComboGrupo().addItem("Seleccione un Grupo");
	
	for (int i=0;i<laboratorio.contarGrupo();i++){
		if (laboratorio.getGrupos().get(i).getStatus()=='A'){
				
				ventanap.setGrupo(laboratorio.getGrupos().get(i).getNombreGrupo());}
			} //llave del if grande
	//ventanap.getComboGrupo().SetSelectesIndex(0);
	}//llave del llenar combo
	
public void cargarTematicas(){
	
	ArrayList<Tematica> te = new ArrayList<Tematica>();
	
	for(int i = 0; i< laboratorio.getLineas().size(); i++){
		LineaDeInvestigacion li = new LineaDeInvestigacion();
		li = laboratorio.getLinea(i);
		for(int j = 0; j< li.contarTematicas(); j++){
			Tematica tema = li.getTematica(j);
			te.add(tema);
		}
	}
	for (int i = 0; i < te.size(); i++){
		Tematica tem = te.get(i);
		String nomb = tem.getDescripcion();
		ventanap.agregarLineacmb(nomb);
	}
}

}//Llave del proyecto
